if ( unlikely(!shadow_mode_enabled(d)) )
return;
- /*
- * Currently this does not fix up page ref counts, so it is valid to call
- * only when a domain is being destroyed.
- */
- BUG_ON(!test_bit(_DOMF_dying, &d->domain_flags) &&
- shadow_mode_refcounts(d));
- d->arch.shadow_tainted_refcnts = shadow_mode_refcounts(d);
-
free_shadow_pages(d);
free_writable_pte_predictions(d);
if ( unlikely(!shadow_mode_enabled(d)) )
return;
- /*
- * Currently this does not fix up page ref counts, so it is valid to call
- * only when a domain is being destroyed.
- */
- BUG_ON(!test_bit(_DOMF_dying, &d->domain_flags) &&
- shadow_mode_refcounts(d));
- d->arch.shadow_tainted_refcnts = shadow_mode_refcounts(d);
-
free_shadow_pages(d);
free_writable_pte_predictions(d);
for ( i = 0; i < (1 << order); i++ )
{
shadow_drop_references(d, &pg[i]);
- ASSERT(((pg[i].u.inuse.type_info & PGT_count_mask) == 0) ||
- shadow_tainted_refcnts(d));
+ ASSERT((pg[i].u.inuse.type_info & PGT_count_mask) == 0);
pg[i].tlbflush_timestamp = tlbflush_current_time();
pg[i].u.free.cpumask = d->cpumask;
list_del(&pg[i].list);
struct shadow_ops *ops;
unsigned int shadow_mode; /* flags to control shadow table operation */
unsigned int shadow_nest; /* Recursive depth of shadow_lock() nesting */
- /* Shadow mode has tainted page reference counts? */
- unsigned int shadow_tainted_refcnts;
/* shadow hashtable */
struct shadow_status *shadow_ht;
#define shadow_mode_translate(_d) ((_d)->arch.shadow_mode & SHM_translate)
#define shadow_mode_external(_d) ((_d)->arch.shadow_mode & SHM_external)
-#define shadow_tainted_refcnts(_d) ((_d)->arch.shadow_tainted_refcnts)
-
#define shadow_linear_pg_table ((l1_pgentry_t *)SH_LINEAR_PT_VIRT_START)
#define __shadow_linear_l2_table ((l2_pgentry_t *)(SH_LINEAR_PT_VIRT_START + \
(SH_LINEAR_PT_VIRT_START >> (L2_PAGETABLE_SHIFT - L1_PAGETABLE_SHIFT))))
#define shadow_drop_references(_d, _p) ((void)0)
#define shadow_sync_and_drop_references(_d, _p) ((void)0)
-#define shadow_tainted_refcnts(_d) (0)
#endif